diff options
| author | IT Fixcomart <it@fixcomart.co.id> | 2023-03-01 09:18:52 +0000 |
|---|---|---|
| committer | IT Fixcomart <it@fixcomart.co.id> | 2023-03-01 09:18:52 +0000 |
| commit | a7abbf4ddc70068620e9f44b74dc162ce2e16ee2 (patch) | |
| tree | 74f66253717515d364ce74bd8275015c1f829cbc /src/pages/shop/product/[slug].jsx | |
| parent | 90e1edab9b6a8ccc09a49fed3addbec2cbc4e4c3 (diff) | |
| parent | a1b9b647a6c4bda1f5db63879639d44543f9557e (diff) | |
Merged in refactor (pull request #1)
Refactor
Diffstat (limited to 'src/pages/shop/product/[slug].jsx')
| -rw-r--r-- | src/pages/shop/product/[slug].jsx | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/pages/shop/product/[slug].jsx b/src/pages/shop/product/[slug].jsx new file mode 100644 index 00000000..cc6924a3 --- /dev/null +++ b/src/pages/shop/product/[slug].jsx @@ -0,0 +1,31 @@ +import Seo from '@/core/components/Seo' +import { getIdFromSlug } from '@/core/utils/slug' +import productApi from '@/lib/product/api/productApi' +import dynamic from 'next/dynamic' + +const BasicLayout = dynamic(() => import('@/core/components/layouts/BasicLayout')) +const Product = dynamic(() => import('@/lib/product/components/Product')) + +export async function getServerSideProps(context) { + const { slug } = context.query + let product = await productApi({ id: getIdFromSlug(slug) }) + if (product?.length == 1) { + product = product[0] + product.description = product.description.replaceAll('<p>', '||p||') + product.description = product.description.replaceAll('</p>', '||/p||') + product.description = product.description.replace(/(<([^>]+)>)/gi, ' ') + product.description = product.description.replaceAll('||p||', '<p>') + product.description = product.description.replaceAll('||/p||', '</p>') + product.description = product.description.trim() + } + return { props: { product } } +} + +export default function ProductDetail({ product }) { + return ( + <BasicLayout> + <Seo title={product?.name} /> + <Product product={product} /> + </BasicLayout> + ) +} |
